From e2d6c4bd8adb3e8a87590c2815bb3f648af312db Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 15 Apr 2009 08:40:12 +0100 Subject: [PATCH] x86: Disable cpuidle by default unless hpet broadcast is available. Signed-off-by: Keir Fraser --- xen/arch/x86/setup.c | 2 +- xen/arch/x86/time.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 5da0b33039..8f2e5eedd4 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -89,7 +89,7 @@ boolean_param("noapic", skip_ioapic_setup); /* **** Linux config option: propagated to domain0. */ /* xen_cpuidle: xen control cstate. */ -/*static*/ int xen_cpuidle = 1; +/*static*/ int xen_cpuidle = -1; boolean_param("cpuidle", xen_cpuidle); int early_boot = 1; diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index ffe90ed1b9..b44871e139 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1279,8 +1279,17 @@ static int disable_pit_irq(void) hpet_broadcast_init(); if ( !hpet_broadcast_is_available() ) { - printk("HPET broadcast init failed, turn to PIT broadcast.\n"); - return 0; + if ( xen_cpuidle == -1 ) + { + xen_cpuidle = 0; + printk("CPUIDLE: disabled due to no HPET. " + "Force enable with 'cpuidle'.\n"); + } + else + { + printk("HPET broadcast init failed, turn to PIT broadcast.\n"); + return 0; + } } } -- 2.30.2